一、V6200升级到V6220
更新内容
1. 新增模组识别码 identify
应用场景:
- 用于区别同一产品不同模组的使用,如同一产品下,使用了不同系列或不同厂家的模组A和模组B;
- 用于区别同一模组不同类型的固件,如模组A有N个不同的分区,user1.bin/user2.bin/…/userN.bin;
定义:xlink_sdk_instance_t 中的 identify
typedef struct xlink_sdk_instance {
//device product id
xlink_uint8 *dev_pid;
//device product key
xlink_uint8 *dev_pkey;
...
//device identify
xlink_uint32 identify;
} xlink_sdk_instance_t;
2. 新增OTA升级接口
应用场景:
远程升级WiFi固件;
远程升级MCU固件;
本地升级WiFi固件;
本地升级MCU固件;
相关宏定义:新增事件 event 定义 EVENT_TYPE_SERVER_ASK_DEVICE_OTA | EVENT_TYPE_CHECK_OTA_TASK | EVENT_TYPE_CHECK_OTA_TASK_CB |EVENT_TYPE_REPORT_OTA_UPGRADE_RESULT
//xlink sdk event enum typedef xlink_enum { EVENT_TYPE_STATUS = 0, ... EVENT_TYPE_SERVER_ASK_DEVICE_OTA, EVENT_TYPE_CHECK_OTA_TASK, EVENT_TYPE_CHECK_OTA_TASK_CB, EVENT_TYPE_REPORT_OTA_UPGRADE_RESULT } xlink_enum_event_type_t;
新增OTA升级固件类型说明
typedef xlink_enum { FIRMWARE_TYEP_WIFI =1, FIRMWARE_TYEP_MCU, FIRMWARE_TYEP_SUBDEV }xlink_ota_firmware_type_t;
新增OTA升级来源,是云端或是本地APP
typedef xlink_enum { FROM_TYEP_LOCAL = 0, FROM_TYEP_CLOUD = 1 }xlink_ota_from_type_t;
新增云端/本地APP请求设备进行OTA升级,设备下一步需要进行查询OTA任务
typedef struct xlink_ask_device_ota_package{ xlink_uint8 from; xlink_uint8 firmware_type; }xlink_ask_device_ota_package_t;
新增设备OTA向云端/本地APP请求查询OTA任务
typedef struct xlink_ota_task_check_package{ xlink_uint8 from; xlink_uint8 firmware_type; xlink_uint16 version; xlink_uint32 identify; }xlink_ota_task_check_package_t;
新增OTA查询返回结果说明
typedef struct xlink_ota_task_check_ack_package{ xlink_uint8 from; xlink_uint8 code; xlink_uint8 firmware_type; xlink_uint16 current_version; xlink_uint32 identify; xlink_uint16 task_id_length; xlink_uint8* task_id; xlink_uint16 target_version; xlink_uint16 target_md5_length; xlink_uint8* target_md5; xlink_uint16 target_url_length; xlink_uint8* target_url; xlink_uint32 target_size; }xlink_ota_task_check_ack_package_t;
新增OTA查询返回结果中 code 说明
typedef xlink_enum { OTA_CHECK_SUCCESS = 1, OTA_UNKNOWN_FIRMWARE_TYPE, OTA_UNKNOWN_DEVICE, OTA_NO_TASK } xlink_enum_ota_check_ack_code_t;
新增设备OTA上报升级结果说明
typedef struct xlink_ota_report_upgrade_result_package{ xlink_uint8 from; xlink_uint8 result; xlink_uint8 firmware_type; xlink_uint8 mod; xlink_uint16 current_version; xlink_uint16 original_version; xlink_uint32 identify; xlink_uint16 task_id_length; xlink_uint8 *task_id_str; }xlink_ota_report_upgrade_result_package_t;
新增事件回调或请求的OTA相关的定义
//xlink sdk event struct typedef struct xlink_sdk_event { xlink_enum_event_type_t enum_event_type_t; xlink_union { xlink_status_t status; ... xlink_ask_device_ota_package_t ask_device_ota_package_t; xlink_ota_task_check_package_t ota_task_check_package_t; xlink_ota_task_check_ack_package_t ota_task_check_ack_package_t; xlink_ota_report_upgrade_result_package_t ota_report_upgrade_result_package_t; ... } event_struct_t; } xlink_sdk_event_t;
其他说明:
OTA相关的接口跟原来的事件接口 EVENT_TYPE_UPGRADE_CB | EVENT_TYPE_UPGRADE_COMPLETE 并不冲突,新增的OTA接口不仅兼容原来是事件请求,更扩充了标识码升级的相关功能;开发者利用OTA接口可获取到WiFi或MCU的固件升级信息,建议开发者在开发/使用时,对不同模组或固件做好标识码区分;
3. 新增设备上报固件版本接口
应用场景:
用于上报WiFi固件版本或MCU固件版本,支持多个上报
相关宏定义
typedef struct xlink_upgrade_version_package{
xlink_uint8 firmware_type;
xlink_uint8 mod;
xlink_uint32 identify;
xlink_uint16 version;
}xlink_upgrade_version_package_t;
函数接口
/*
* count : 设备上报的数量
* data : 传入组合型的 xlink_upgrade_version_package_t 定义的数据包组合
*/
XLINK_FUNTION xlink_int32 xlink_update_current_verison(struct xlink_sdk_instance** sdk_instance, xlink_uint8 id_count, void * data);
4. 规范了SDK所有的宏定义,部分不兼容以前的版本,需要开发者修正;
5. 优化了SDK内存分配;
6. 修复了因不同模组带来的部分兼容性问题;
二、V6000升级到V6200
更新内容
1. 增加订阅使能接口
调用此接口,能限制APP订阅设备,可以通过此接口配置成使能1-300秒(仅限于XLINK_SDK_V6200以上版本)。
XLINK_FUNTION extern xlink_int32 xlink_enable_local_subscription(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 time);
2. 新添订阅失能接口
调用此接口,能关闭设备的订阅功能,仅能通过其他已配对的APP分享添加(仅限于XLINK_SDK_V6200以上版本)。
XLINK_FUNTION extern xlink_int32 xlink_disable_local_subscription(struct xlink_sdk_instance_t **sdk_instance);
3. 新添 pinCode 校验码接口
pinCode 的主要用途是用于校验一些特殊的功能和信息,若不设置设备的 pinCode,需要将pinCode_length设置为0,否则程序可能会出错;
注意设备的 pinCode 是厂商决定的,调用此接口,能设置特定的 pingcode ,pingcode 最大长度是尽可能在32以内,也可以设置更大,但对硬件有相应的要求;具体设计可查看相应的demo(该接口仅限于XLINK_SDK_V6200以上版本)。
typedef struct xlink_sdk_instance_t {
//device product id
xlink_uint8 *dev_pid;
//device product key
xlink_uint8 *dev_pkey;
...
//pingcode_length
xlink_uint16 pingcode_length; // new add
//device pingcode
xlink_uint8 *pingcode; // new add
} xlink_sdk_instance_t;
4. event事件类型增加订阅类型和部分修改
5. 优化了网内发现和通讯机制,使用上对开发者没有影响
6. 新增了flash的读写内容,总大小约400Kb左右,开发者需注意
7. 优化了订阅功能,此次更新的订阅接口,需Device_SDK_V6200需要结合APP_SDK_V6.2以上才能正常使用;
三、迁移指引
- 替换设备端SDK_V6的库文件,包括xlinkv6.a和xlink_sdk.h;
- 针对event事件进行代码修改,event详情见开发指南,代码参考最新demo工程;
- 需要更新对应厂商所提供的最新的SDK;
四、更新说明
日期 | 更新内容 |
---|---|
2018/3/12 | 新增V5000升级到V6000版本 |
2018/9/17 | 新增V6000升级到V6200版本 |
2018/12/12 | 新增V6200升级到V6220版本 |